/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package gui;

import dominio.Usuario;
import java.util.List;
import javax.swing.JOptionPane;
import negocio.Negocio;
import negocio.UsuarioNegocio;

/**
 *
 * @author igo
 */
public class ControladorUsuario implements Controlador{
    private Negocio un;

    private JanelaCadastro janelaCadastro;

    private JanelaLista janelaLista;

    private Usuario usuario;
    
    private Usuario usuarioAtual;
    
    private Controlador controladorJanelaPrincipal;

    public ControladorUsuario(){
        un = new UsuarioNegocio();
        usuario= new Usuario();
    }
    
    public ControladorUsuario(Controlador controlador, Usuario usuario){
        un = new UsuarioNegocio();
        this.usuario= usuario;
        this.controladorJanelaPrincipal = controlador;
        this.usuarioAtual = usuario;
    }

    public void inserir(){
        if(un.inserir(usuario)){
            usuario = new Usuario();
            janelaCadastro.preparaTela();
        }
        JOptionPane.showMessageDialog(null, un.getMensagem());
    }


    public void alterar() {
        un.alterar(usuario);
        janelaCadastro.preparaTela();
        JOptionPane.showMessageDialog(null, un.getMensagem());
    }

    public void excluir() {
        if(un.excluir(usuario)){
            usuario = new Usuario();
            janelaCadastro.preparaTela();
        }
        JOptionPane.showMessageDialog(null, un.getMensagem());
    }

    public void listar() {
        List<Object> lista = un.listar();
        janelaLista = new JanelaListaUsuario(this, lista);
        janelaLista.setVisivel(true);
    }

    public void pesquisar() {
        //método em branco pois este caso de uso não possui esta funcionalidade 
    }

    public void preparaJanelaCadastro() {
        janelaCadastro.preparaTela();
        janelaCadastro.setVisivel(true);
    }

    /**
     * @param janelaCadastro the janelaCadastro to set
     */
    public void setJanelaCadastro(JanelaCadastro janelaCadastro) {
        this.janelaCadastro = janelaCadastro;
    }

    /**
     * @return the funcionario
     */
    public Object getObject() {
        return usuario;
    }

    /**
     * @param funcionario the funcionario to set
     */
    public void setObject(Object objeto) {
        this.usuario = (Usuario) objeto;
    }

    public void encerrar() {
        controladorJanelaPrincipal.preparaJanelaCadastro();
    }

    public void cadastrarComposicao() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    /**
     * @return the usuarioAtual
     */
    public Usuario getUsuarioAtual() {
        return usuarioAtual;
    }

    /**
     * @param usuarioAtual the usuarioAtual to set
     */
    public void setUsuarioAtual(Usuario usuarioAtual) {
        this.usuarioAtual = usuarioAtual;
    }

}
